﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Helena.Areas.Clientes.Models;
using Helena.Areas.Vendedores.Models;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace Helena.Areas.Ventas.Models
{
    public class VentaView
    {
        public int ID { get; set; }

        [DisplayName("Activo")]
        public bool Estado { get; set; }

        [DisplayName("N° Ticket")]
        [Range(0,int.MaxValue)]
        public int Ticket { get; set; }

        [DisplayName("N° Boleta")]
        [Range(0, int.MaxValue)]
        public int Boleta { get; set; }

        [DisplayName("N° Factura")]
        [Range(0, int.MaxValue)]
        public int Factura { get; set; }

        [DisplayName("Nombre del cliente")]
        public int ClienteID { get; set; }
        
        [DisplayName("Nombre de la Vendedora")] 
        public int VendedorID { get; set; }

        [DisplayName("Fecha")]
        public DateTime Fecha { get; set; }
        
        [DisplayName("Descripcion")]
        public string Descripcion { get; set; }

        [DisplayName("Sub Total")]
        public decimal Sub_Total { get; set; }

        [DisplayName("% Descuento")]
        public double Descuento { get; set; }

        [DisplayName("Total S/")]
        public decimal Total_En_Soles { get; set; }

        [DisplayName("Total US$")]
        public decimal Total_En_Dolares { get; set; }
        
        [DisplayName("IGV")]
        public decimal Valor_Del_Igv_En_Soles { get; set; }

        [DisplayName("Tipo Cambio")]
        public double ValorTipoCambio { get; set; }

        [DisplayName("Pago Tarjeta S/")]
        public decimal Pago_con_Tarjeta_en_Soles { get; set; }

        [DisplayName("Pago Efectivo S/")]
        public decimal Pago_en_Efectivo_en_Soles { get; set; }

        [DisplayName("Pago Dolares US$/")]
        public decimal Pago_en_Efectivo_en_Dolares { get; set; }

        [DisplayName("Vuelto S/")]
        public decimal Vuelto { get; set; }      

        [DisplayName("Tipo de Tarjeta")]
        public int tarjetaID { get; set; }


        public VentaView() { 
            Estado = true; 
            Fecha = DateTime.Now;
            Ticket = 0;
            Boleta = 0;
            Factura = 0;
            ValorTipoCambio = 0;
            Sub_Total=0;
            Total_En_Soles=0;
            Total_En_Dolares = 0;
            Pago_con_Tarjeta_en_Soles = 0;
            Pago_en_Efectivo_en_Dolares = 0;
            Pago_en_Efectivo_en_Soles = 0;
            tarjetaID = 1;
            Descripcion = " ";
        }

        public VentaView(Venta v)
        {
            ID = v.ID;
            Estado = v.Estado;
            Ticket = v.Ticket;
            Boleta = v.Boleta;
            Factura = v.Factura;
            ClienteID = v.clienteID;
            Descripcion = v.Descripcion;
            VendedorID = v.vendedorID;
            Fecha = v.Fecha;
            Sub_Total=v.Sub_Total;
            Descuento=v.Descuento;
            Total_En_Soles=v.Total_En_Soles;
            Total_En_Dolares=v.Total_En_Dolares;
            Valor_Del_Igv_En_Soles=v.Valor_Del_Igv_En_Soles;
            ValorTipoCambio=v.ValorTipoCambio;
            Pago_con_Tarjeta_en_Soles=v.Pago_con_Tarjeta_en_Soles;
            Pago_en_Efectivo_en_Soles = v.Pago_en_Efectivo_en_Soles;
            Pago_en_Efectivo_en_Dolares=v.Pago_en_Efectivo_en_Dolares;
            Vuelto=v.Vuelto;
            tarjetaID = v.tarjetaID;
            Estado = v.Estado;

            
        }

        public Venta deserializa(InterfazLogicaVenta logica)
        {
            return new Venta
            {
                ID = this.ID,
                Estado = this.Estado,
                Ticket = this.Ticket,
                Boleta = this.Boleta,
                Factura = this.Factura,
                clienteID = this.ClienteID,
                tarjetaID=this.tarjetaID,
                vendedorID = this.VendedorID,
                Fecha = this.Fecha,
                Sub_Total=this.Sub_Total,
                Descuento=this.Descuento,
                Total_En_Soles=this.Total_En_Soles,
                Total_En_Dolares=this.Total_En_Dolares,
                Valor_Del_Igv_En_Soles=this.Valor_Del_Igv_En_Soles,
                ValorTipoCambio=this.ValorTipoCambio,
                Pago_con_Tarjeta_en_Soles=this.Pago_con_Tarjeta_en_Soles,
                Pago_en_Efectivo_en_Soles=this.Pago_en_Efectivo_en_Soles,
                Pago_en_Efectivo_en_Dolares=this.Pago_en_Efectivo_en_Dolares,
                Vuelto=this.Vuelto,
                Descripcion=this.Descripcion
            };
        }
    }
}